package com.dl.mall.utils;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.Objects;

/**
 * @author DL
 * @create 2022-04-04 16:22
 */
public class FileUtils {

    public static boolean upload(MultipartFile[] files, String path){
        boolean flag = true;
        for (MultipartFile file : files) {
            // 获取文件全名a.py
            String fullName = file.getOriginalFilename();
            System.out.println("fullName = " + fullName);
            // 文件上传路径
            //String templatePath = "C:\\Users\\123\\OneDrive\\桌面\\开题答辩\\个人\\public\\upload-test\\";
            String templatePath = "C:\\Users\\123\\OneDrive\\桌面\\开题答辩\\个人\\public\\upload-test\\" + path + "\\";

            // 获取文件的后缀名
            String suffix = fullName.substring(fullName.lastIndexOf("."));
            // 解决中文问题,liunx 下中文路径,图片显示问题
            String fileName = UUIDUtils.getUUID10() + suffix;

            File realPath = new File(templatePath + fileName);
            //文件上传-覆盖
            try {
                // 检测是否存在目录
                if (!realPath.exists()) {
                    realPath.mkdirs();
                }
                file.transferTo(realPath);
            } catch (Exception e) {
                flag =  false;
            }
        }
        return flag;
    }

    /**
     * 上传产品主图
     * @param files 主图
     * @param path 主图路径
     * @param productId
     * @return
     */
    public static String uploadReturnMain(MultipartFile[] files, String path, String productId){
        StringBuffer stringBuffer = new StringBuffer();
        for (MultipartFile file : files) {
            // 获取文件全名a.py
            String fullName = file.getOriginalFilename();
            // 文件上传路径
            String templatePath = "C:\\Users\\123\\OneDrive\\桌面\\开题答辩\\个人\\public\\upload-test\\" + path + "\\";
            // 获取文件的后缀名
            String suffix = fullName.substring(fullName.lastIndexOf("."));
            // 解决中文问题,liunx 下中文路径,图片显示问题
            //String fileName = UUIDUtils.getUUID10() + suffix;
            String fileName = productId + suffix;
            //System.out.println("fileName = " + fileName);

            stringBuffer.append(path).append(fileName).append(",");
            File realPath = new File(templatePath + fileName);
            //文件上传-覆盖
            try {
                // 检测是否存在目录
                if (!realPath.exists()) {
                    realPath.mkdirs();
                }
                file.transferTo(realPath);
            } catch (Exception e) {
                System.out.println("图片上传错误");
                return null;
            }
        }
        stringBuffer.setLength(stringBuffer.length() - 1);
        return String.valueOf(stringBuffer);
    }

    /**
     * 上传产品副图
     * @param files 副图
     * @param path 上传路径
     * @param productId 产品id，用来作为副图的名称
     * @return 处理后的副图名称
     */
    public static String uploadReturnSub(MultipartFile[] files, String path, String productId){
        StringBuffer stringBuffer = new StringBuffer();
        int i = 1;
        for (MultipartFile file : files) {
            // 获取文件全名a.py
            String fullName = file.getOriginalFilename();
            // 文件上传路径
            String templatePath = "C:\\Users\\123\\OneDrive\\桌面\\开题答辩\\个人\\public\\upload-test\\" + path + "\\";
            // 获取文件的后缀名
            String suffix = fullName.substring(fullName.lastIndexOf("."));
            // 解决中文问题,liunx 下中文路径,图片显示问题
            //String fileName = UUIDUtils.getUUID10() + suffix;
            String fileName = productId + "_" +  i + suffix;
            //System.out.println("fileName = " + fileName);

            stringBuffer.append(path).append(fileName).append(",");
            File realPath = new File(templatePath + fileName);
            //文件上传-覆盖
            try {
                // 检测是否存在目录
                if (!realPath.exists()) {
                    realPath.mkdirs();
                }
                file.transferTo(realPath);
                //System.out.println("realPath.getAbsolutePath() = " + realPath.getAbsolutePath());
            } catch (Exception e) {
                System.out.println("图片上传错误");
                return null;
            }
            i++;
        }
        stringBuffer.setLength(stringBuffer.length() - 1);
        return String.valueOf(stringBuffer);
    }

    /**
     * 上传规格图片
     * @return 是否成功
     */
    public static String uploadSpecsImg(MultipartFile file,String specsPrefix, String specsImgName) throws IOException {

        // 获取文件全名a.py
        String fullName = file.getOriginalFilename();
        // 文件上传路径
        String templatePath = "C:/Users/123/OneDrive/桌面/开题答辩/个人/public/upload-test" + specsPrefix;
        System.out.println("templatePath = " + templatePath);
        // 获取文件的后缀名
        String suffix = fullName.substring(fullName.lastIndexOf("."));
        // 解决中文问题,liunx 下中文路径,图片显示问题
        //String fileName = UUIDUtils.getUUID10() + suffix;
        String fileName = specsImgName + suffix;
        System.out.println("fileName = " + fileName);

        File realPath = new File(templatePath + fileName);
        //文件上传-覆盖
        // 检测是否存在目录
        if (!realPath.exists()) {
            realPath.mkdirs();
        }
        file.transferTo(realPath);
        System.out.println("realPath.getAbsolutePath() = " + realPath.getAbsolutePath());
        return fileName;
    }



    /**
     * 上传品牌图片
     * @return 是否成功
     */
    public static String uploadBrandImg(MultipartFile file,String brandPrefix, Integer brandId) throws IOException {

        // 获取文件全名a.py
        String fullName = file.getOriginalFilename();
        // 文件上传路径
        String templatePath = "C:\\Users\\123\\OneDrive\\桌面\\开题答辩\\个人\\" + brandPrefix;
        System.out.println("templatePath = " + templatePath);
        // 获取文件的后缀名
        String suffix = Objects.requireNonNull(fullName).substring(fullName.lastIndexOf("."));
        // 解决中文问题,liunx 下中文路径,图片显示问题
        //String fileName = UUIDUtils.getUUID10() + suffix;
        String fileName = brandId + suffix;
        System.out.println("fileName = " + fileName);

        File realPath = new File(templatePath + fileName);
        //文件上传-覆盖
        // 检测是否存在目录
        if (!realPath.exists()) {
            realPath.mkdirs();
        }
        file.transferTo(realPath);
        return fileName;
    }



}
